package com.ncr.travel.tas.shared.configuration.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.ncr.travel.tas.shared.configuration.ConfigurationValueEnum;

/**
 * Defines a ConfigurationValue object with annotations. If a class decorated
 * with this annotation is parsed by ConfigurationManager.synchronize(Object)
 * then a configuration value will be retrieved based on the name and scope
 * arguments in this annotation. If no default configuration is found, then a
 * configuration record will be created as the default.
 * 
 * @author eb250081
 * 
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD, ElementType.FIELD })
public @interface Configuration {

	ConfigurationValueEnum type() default ConfigurationValueEnum.GENERIC_VALUE;

	String key();

	String tag() default "";

	String minimum() default "";

	String maximum() default "";

	String regex() default "";

	String description() default "";

}
